\definecolor{turquoise}{RGB}{0,200,180}
\definecolor{orange}{RGB}{230,127,0}
\centering
\hspace*{-.5cm}
\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep, scale=.8]
   \tikzstyle{every pin edge}=[<-,shorten <=1pt]
   \tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
   \tikzstyle{input neuron}=[neuron, fill=green!50];
   \tikzstyle{output neuron}=[neuron, fill=red!50];
   \tikzstyle{hidden neuron}=[neuron, fill=blue!50];
   \tikzstyle{annot} = [text width=4em, text centered];
	\tikzstyle{health}=[rectangle,fill=green];
	\tikzstyle{ehealth}=[rectangle,fill=red];
	\tikzstyle{dist}=[rectangle,fill=blue];
	\tikzstyle{theta}=[rectangle,fill=blue];
	\tikzstyle{attack}=[rectangle,fill=orange];
	\tikzstyle{move}=[rectangle,fill=turquoise];

	\node[cloud, cloud puffs=15.7, cloud ignores aspect, minimum width=2cm, minimum height=5cm, align=center, draw] (hidden) at (2, 1.5) {};

    % Draw the input layer nodes
	\node[health] (ah1) at (0,4) {};
	\node[health] (ah2) at (0,3.5) {};
	\node[health] (ah3) at (0,3) {};
	\node[annot,left of=ah2, node distance = 1.5cm, text width = 2cm] (health_annot) {Ally \\ Health};
	\foreach \dest in {1,...,3}
		\path (health_annot) edge (ah\dest);

	\node[ehealth] (eh1) at (0,2) {};
	\node[ehealth] (eh2) at (0,1.5) {};
	\node[ehealth] (eh3) at (0,1) {};
	\node[annot,left of=eh2, node distance = 1.5cm, text width = 2cm] (ehealth_annot) {Enemy \\ Health};
	\foreach \dest in {1,...,3}
		\path (ehealth_annot) edge (eh\dest);

	\node[dist] (dist) at (0,0) {};
	\node[theta] (theta) at (0,-.5) {};
	\node[annot, text width = 2cm] (disttheta_annot) at (-2,-.25) {Enemy $r,\theta$ \\($\forall$ pairs)};
	\path (disttheta_annot) edge (dist);
	\path (disttheta_annot) edge (theta);

	\foreach \s in {ah1,ah2,ah3,eh1,eh2,eh3,dist,theta}
		\path (\s) edge (hidden);

	\node[attack] (a1attack1) at (4,4) {};
	\node[attack] (a1attack2) at (4,3.7) {};
	\node[attack] (a1attack3) at (4,3.4) {};

	\node[annot, text width=2.3cm] (a1attacks) at (5.6, 3.7) {Ally 1 Enemy Attack};

	\node[move] (a1moveScore) at (4,3) {};
	\node[move] (a1moveDist) at (4,2.7) {};
	\node[move] (a1moveTheta) at (4,2.4) {};
	\node[move] (a1moveFlip) at (4,2.1) {};

	\node[annot, text width=2.3cm] (a1moves) at (5.6, 2.4) {Ally 1 Move $(s,r,\theta,f)$};

	\node[annot, text width=.1cm] (dots) at (4,1.7) {\vdots};

	\node[attack] (a3attack1) at (4,1) {};
	\node[attack] (a3attack2) at (4,.7) {};
	\node[attack] (a3attack3) at (4,.4) {};

	\node[annot, text width=2.3cm] (a1attacks) at (5.6, .7) {Ally 3 Enemy Attack};

	\node[move] (a3moveScore) at (4,0) {};
	\node[move] (a3moveDist) at (4,-.3) {};
	\node[move] (a3moveTheta) at (4,-.6) {};
	\node[move] (a3moveFlip) at (4,-.9) {};

	\node[annot, text width=2.3cm] (a3moves) at (5.6, -.6) {Ally 3 Move $(s,r,\theta,f)$};

	\foreach \d in {a1attack1,a1attack2,a1attack3,a1moveScore,a1moveDist,
						a1moveTheta,a1moveFlip,a3moveScore,a3moveDist,
						a3moveTheta,a3moveFlip,dots}
		\path (hidden) edge (\d);

    % Annotate the layers
    \node[annot] at (0,5.2) {Input layer};
    \node[annot] at (2,5.2) {Hidden layer};
    \node[annot] at (4,5.2)  {Output layer};
\end{tikzpicture}
